This application relates generally to initialization of a processor-based system from a system firmware program, such as a basic input output system (BIOS), and more particularly, reconfiguration of a memory to reduce boot time in computing platforms incorporating a variety of different underlying processor architectures.
For proper initialization, most processor-based systems include a program or code generally known as a basic input output system (BIOS). The BIOS is typically stored on the motherboard as firmware, either in a read-only memory (ROM) or a flash device. Upon receiving power, the processor-based system begins executing instructions in the BIOS. Typically, the BIOS includes instructions for initializing the processor-based system following power-on or after a system reset. Initialization may include testing and initializing memory, a video display, a keyboard, a floppy drive, and so on. Following component initialization, the BIOS loads and runs an operating system (OS) program.
In computing systems, use of a cache memory with a processor is known to increase performance of processor architectures. Typically, a cache memory is used for rapidly loading data to the processor or storing data from the processor to a memory. For instance, the data that is required by the processor may be cached in the cache memory (or cache memories, such as several levels of cache memory L1, L2, and L3). While operating, a processor-based system including a computer system may employ such one or more levels of the cache memory.
Using the cache memory, among other things, the processor-based system transfers large amounts of data to and from a system memory to improve performance for a variety of applications, especially data-intensive applications. In doing so, one high performance processor architecture may support several memory types for the system memory. Examples of the memory types may include write back (WB), write through (WT), uncacheable speculative write combining (USWC), uncacheable (UC), and write protected (WP). Typically, the WB memory type is cacheable whereas the USWC and UC memory types are uncacheable.
In the majority of personal computers, before booting the OS program, all memory contents are overwritten to a default setting (e.g., conventionally to “0”). As the original personal computer (PC) platform from International Business Machines (IBM) of Armonk, N.Y. wrote all the memory contents to “0” before booting the operating system, this has been a de facto requirement of most of modem PCs. However, many modem operating systems do not require the system memory to be cleared, but it is still a requirement for a variety of computer systems, such as those containing error code checker (ECC) memory types where ECC data must be set to a default state before the system memory being used. This approach has remained unchanged for many years, and uses only features common to the 32-bit processor architectures, such as a 32-bit processor architecture with IA32 instruction set.
There are, however, inherent limitations in writing all the system memory contents to “0” before booting. In particular, while booting some platforms with conventional approaches, such as the 32-bit processor architecture with an IA32 instruction set, only 32-bit transfers of data to the system memory of uncacheable memory type may be possible, or even worse, write backs may be needed. That is, for every memory write that results in a cache miss (i.e., every single transfer when accessing the memory) the data will not only be written to the cache memory, but also a flush (write) back to the system memory of a whole cache line (4 to 16 quad-words, depending on the processor type) may be required as well.
Unfortunately, this is very inefficient and causes a perceivable delay to an end-user when booting a processor-based system. For most PC platforms using a BIOS, such perceivable reduction in boot time, however, may provide a competitive advantage to end-users.
Thus, there is a continuing need for a rapid booting mechanism for a processor-based system in a variety of computing platforms.